/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamankelompokbiaya;

import java.util.List;
import java.util.Map;

import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.sadhar.sipp.jenisbiaya.JenisBiaya;
import org.sadhar.sipp.jenisbiaya.JenisBiayaDAO;
import org.sadhar.sipp.jenisbiaya.JenisBiayaDAOImpl;
import org.sadhar.sipp.perekamanunitposbiayakhusus.PerekamanUnitPosBiayaKhususDAO;
import org.sadhar.sipp.perekamanunitposbiayakhusus.PerekamanUnitPosBiayaKhususDAOImpl;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Div;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Toolbarbutton;
import org.zkoss.zul.Window;

/**
 * 
 * @author Yohan Hardinugroho
 */
public class PerekamanKelompokBiayaWnd extends ClassApplicationModule {

    private PerekamanKelompokBiayaDAO kelompokBiayaDAO;
    private PerekamanUnitPosBiayaKhususDAO unitPosBiayaKhususDAO;
    private JenisBiayaDAO jenisBiayaDAO;

    public PerekamanKelompokBiayaWnd() {
        kelompokBiayaDAO = new PerekamanKelompokBiayaDAOImpl();
        unitPosBiayaKhususDAO = new PerekamanUnitPosBiayaKhususDAOImpl();
        jenisBiayaDAO = new JenisBiayaDAOImpl();
    }
    private Textbox txtboxKeySearch;
    private Textbox txtboxIdPosBiaya;
    private Combobox cmbboxTahunKelompokAnggaran;
    private Combobox cmbboxJenisBiaya;
    private Label lblKodeTahunKelompokAnggaran;
    private Radio rdUmum;
    private Radio rdKhusus;
    private Listbox lstboxDaftarKelompokBiaya;

    public void onCreate() throws Exception {
        txtboxIdPosBiaya = (Textbox) getFellow("txtboxIdPosBiaya");
        txtboxKeySearch = (Textbox) getFellow("txtboxKeySearch");
        cmbboxJenisBiaya = (Combobox) getFellow("cmbboxJenisBiaya");
        cmbboxTahunKelompokAnggaran = (Combobox) getFellow("cmbboxTahunKelompokAnggaran");
        lblKodeTahunKelompokAnggaran = (Label) getFellow("lblKodeTahunKelompokAnggaran");
        lstboxDaftarKelompokBiaya = (Listbox) getFellow("lstboxDaftarKelompokBiaya");
        rdUmum = (Radio) getFellow("rdUmum");
        rdKhusus = (Radio) getFellow("rdKhusus");
        readyState();
        clear();
        load();
    }

    public void readyState() {
        cmbboxTahunKelompokAnggaran.setFocus(true);
    }

    public void clear() throws Exception {
        rdUmum.setSelected(true);
        txtboxIdPosBiaya.setValue("");
        txtboxKeySearch.setValue("");
        cmbboxJenisBiaya.setValue("");
        lblKodeTahunKelompokAnggaran.setValue("");

        rdUmum.setDisabled(false);
        rdKhusus.setDisabled(false);
        txtboxIdPosBiaya.setDisabled(false);
        txtboxKeySearch.setDisabled(false);
        cmbboxJenisBiaya.setDisabled(false);
        cmbboxTahunKelompokAnggaran.setDisabled(false);

    }

    public void cmbboxTahunKelompokAnggaranOnChange() {
        lstboxDaftarKelompokBiaya.getItems().clear();
        int no = 0;
        String tahun = cmbboxTahunKelompokAnggaran.getValue();
        for (final Map m : kelompokBiayaDAO.listDetails(tahun)) {
            Listitem item = new Listitem();
            item.setValue(m);
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("jenisBiaya"))));
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("namaPosBiaya"))));

            final boolean isUmum = m.get("isUmum").toString().equalsIgnoreCase(
                    "Y");
            if (isUmum) {
                item.appendChild(new Listcell("Umum"));
            } else {
                item.appendChild(new Listcell("Khusus"));
            }

            item.appendChild(new Listcell());

            Toolbarbutton toolbarbtnUbah = new Toolbarbutton();
            toolbarbtnUbah.setLabel("[ubah]");
            toolbarbtnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    String isMutlak = (String) m.get("isMutlak");
                    if (isMutlak.equalsIgnoreCase("Y")) {
                        Messagebox.show("Data Tidak Dapat Diubah ",
                                "Informasi", Messagebox.OK,
                                Messagebox.INFORMATION);
                        clear();
                        return;
                    } else {
                        Window window = (Window) getRoot().getFellow(
                                "contentDiv").getFirstChild();

                        Label lblKodeTahunKelompokAnggaran = (Label) window.getFellow("lblKodeTahunKelompokAnggaran");
                        lblKodeTahunKelompokAnggaran.setValue(m.get(
                                "kodeKelompokBiaya").toString());
                        Combobox cmTahunKelompok = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
                        cmTahunKelompok.setValue(m.get("tahunKelompok").toString());
                        cmTahunKelompok.setDisabled(true);
                        Combobox cmbJenisBiaya = (Combobox) window.getFellow("cmbboxJenisBiaya");
                        cmbJenisBiaya.setDisabled(true);
                        String namaJenisBiaya = m.get("jenisBiaya").toString();
                        if (namaJenisBiaya.trim().length() < 1) {
                            cmbJenisBiaya.setValue(m.get("namaJenisBiayaHidden").toString());
                        } else {
                            cmbJenisBiaya.setValue(m.get("jenisBiaya").toString());
                        }
                        Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
                        txtboxIdPosBiaya.setDisabled(true);
                        txtboxIdPosBiaya.setValue(m.get("kodePosBiaya").toString());
                        Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
                        txtboxKeySearch.setDisabled(true);
                        txtboxKeySearch.setValue(m.get("namaPosBiaya").toString());

                        Radio rdUmum = (Radio) window.getFellow("rdUmum");
                        Radio rdKhusus = (Radio) window.getFellow("rdKhusus");
                        rdUmum.setChecked(isUmum);
                        rdKhusus.setChecked(!isUmum);

                        rdKhusus.setDisabled(false);
                        rdUmum.setDisabled(false);
                        txtboxIdPosBiaya.setDisabled(false);
                        txtboxKeySearch.setDisabled(false);
                        cmbJenisBiaya.setDisabled(false);
                        cmTahunKelompok.setDisabled(false);

                    }

                }
            });

            final Toolbarbutton toolbarbtnHapus = new Toolbarbutton();
            toolbarbtnHapus.setLabel("[hapus]");
            toolbarbtnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    String isMutlak = (String) m.get("isMutlak");
                    if (isMutlak.equalsIgnoreCase("Y")) {
                        Messagebox.show("Data Tidak Dapat Dihapus ",
                                "Informasi", Messagebox.OK,
                                Messagebox.INFORMATION);
                        return;
                    } else {
                        if (Messagebox.show("Apakah data Item Biaya: " + m.get("namaPosBiaya").toString() + " akan dihapus?", "Pesan Konfirmasi",
                                Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                            try {
                                Integer kode = (Integer) m.get("kodeKelompokBiaya");
                                long cek = kelompokBiayaDAO.cekTableAnak(kode);
                                if (cek > 0) {
                                    if (Messagebox.show("Data sudah dipakai di table lain. Apakah data Item Biaya: " + m.get("namaPosBiaya").toString() + " akan dihapus?", "Pesan Konfirmasi",
                                            Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                                        kelompokBiayaDAO.delete(kode.intValue());
                                    }
                                } else {
                                    kelompokBiayaDAO.delete(kode.intValue());
                                }
                            } catch (Exception ex) {
                                Messagebox.show("Gagal menghapus data: " + ex.getMessage());
                            }
                            Window window = (Window) getRoot().getFellow(
                                    "contentDiv").getFirstChild();
                            Button btnBatal = (Button) window.getFellow("btnBatal");
                            toolbarbtnHapus.addForward(null, btnBatal,
                                    "onClick");
                        }
                    }
                }
            });

            Hbox box = new Hbox();
            box.appendChild(toolbarbtnUbah);
            box.appendChild(toolbarbtnHapus);

            if (!isUmum) {
                final Toolbarbutton toolbarisiunit = new Toolbarbutton();
                toolbarisiunit.setLabel("[isi unit]");

                box.appendChild(toolbarisiunit);
                toolbarisiunit.addEventListener("onClick", new EventListener() {

                    public void onEvent(Event arg0) throws Exception {
                        Window window = (Window) getRoot().getFellow(
                                "windowPerekamanKelompokBiaya");
                        final Window win = (Window) Executions.createComponents(
                                "sippzul/perekamanunitposbiayakhusus/PerekamanUnitPosBiayaKhusus.zul", window, null);
                        Combobox cmbBoxTahunKelompokAnggaran = (Combobox) win.getFellow("cmbBoxTahunKelompokAnggaran");
                        cmbBoxTahunKelompokAnggaran.setValue(m.get("tahunKelompok").toString());
                        win.doModal();
                    }
                });
            }
            Listcell lbox = new Listcell();
            lbox.appendChild(box);
            item.appendChild(lbox);
            item.addEventListener("onClick", new EventListener() {

                @Override
                public void onEvent(Event event) throws Exception {
                    // TODO Auto-generated method stub
                    Window window = (Window) getRoot().getFellow("contentDiv").getFirstChild();
                    Label lblKodeTahunKelompokAnggaran = (Label) window.getFellow("lblKodeTahunKelompokAnggaran");
                    lblKodeTahunKelompokAnggaran.setValue(m.get(
                            "kodeKelompokBiaya").toString());
                    Combobox cmTahunKelompok = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
                    cmTahunKelompok.setValue(m.get("tahunKelompok").toString());

                    Combobox cmbJenisBiaya = (Combobox) window.getFellow("cmbboxJenisBiaya");
                    String namaJenisBiaya = m.get("jenisBiaya").toString();
                    if (namaJenisBiaya.trim().length() < 1) {
                        cmbJenisBiaya.setValue(m.get("namaJenisBiayaHidden").toString());
                    } else {
                        cmbJenisBiaya.setValue(m.get("jenisBiaya").toString());
                    }
                    Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
                    txtboxIdPosBiaya.setValue(m.get("kodePosBiaya").toString());
                    Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
                    txtboxKeySearch.setValue(m.get("namaPosBiaya").toString());

                    Radio rdUmum = (Radio) window.getFellow("rdUmum");
                    Radio rdKhusus = (Radio) window.getFellow("rdKhusus");
                    rdUmum.setChecked(isUmum);
                    rdKhusus.setChecked(!isUmum);
                    rdUmum.setDisabled(true);
                    rdKhusus.setDisabled(true);

                }
            });
            lstboxDaftarKelompokBiaya.appendChild(item);
        }
    }

    public void cmbboxTahunKelompokAnggaranOnBlur() {

        boolean cekCmbboxTahun = cmbboxTahunKelompokAnggaran.getValue().isEmpty();
        if (cekCmbboxTahun) {
            return;
        }

        {
            String tahun = cmbboxTahunKelompokAnggaran.getValue();
            List<Map> listTahunSekarang = kelompokBiayaDAO.listByTahun(tahun);
            if (listTahunSekarang.size() > 0) {
                return;
            }
        }

        {
            String tahun = cmbboxTahunKelompokAnggaran.getValue();
            int tahunSebelum = Integer.parseInt(tahun) - 1;
            List<Map> listTahunSebelumnya = kelompokBiayaDAO.listByTahun("" + tahunSebelum);
            if (listTahunSebelumnya.size() <= 0) {
                return;
            }
        }
        try {
            if (Messagebox.show("Apakah Salin dari Tahun Anggaran Sebelumnya?",
                    "Pesan Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                String tahun = cmbboxTahunKelompokAnggaran.getValue();
                String tahunSebelumnya = Integer.toString(Integer.parseInt(tahun) - 1);
                List<Map> listTahunSebelumnya = kelompokBiayaDAO.listByTahun(tahunSebelumnya);
                for (Map m : listTahunSebelumnya) {
                    PerekamanKelompokBiaya pkb = new PerekamanKelompokBiaya();
                    pkb.setTahunKelompok(tahun);
                    pkb.setKodePosBiaya(ClassAntiNull.AntiNullInt(m.get("kodePosBiaya")));
                    pkb.setKodeJenisBiaya(ClassAntiNull.AntiNullInt(m.get("kodeJenisBiaya")));
                    pkb.setIsUmum(ClassAntiNull.AntiNullString(m.get("isUmum")));
                    pkb.setIsMutlak(ClassAntiNull.AntiNullString(m.get("isMutlak")));
//		    pkb.setKodeGL2(ClassAntiNull.AntiNullInt(m.get("kodeGL2")));
//		    pkb.setKodeGL3(ClassAntiNull.AntiNullInt(m.get("kodeGL3")));
//		    pkb.setKodeGL4(ClassAntiNull.AntiNullInt(m.get("kodeGL4")));
                    try {
                        kelompokBiayaDAO.insert(pkb);
                        loadTahunKelompokAnggaran();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }
                cmbboxTahunKelompokAnggaranOnChange();
            } else {
            }
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }

    // ////////////////////////////////
    /*
     * public void loadLstboxDaftarKelompokBiaya() {
     * 
     * ListModel model = new
     * SimpleListModel(kelompokBiayaDAO.listDetails().toArray()); RowRenderer
     * renderer = new PerekamanKelompokBiayaRowRenderer();
     * 
     * gridDaftarKelompokBiaya.setModel(model);
     * gridDaftarKelompokBiaya.setRowRenderer(renderer); }
     */
    public void load() throws Exception {
        loadTahunKelompokAnggaran();
        loadCmbboxJenisBiaya();

    }

    public void loadCmbboxJenisBiaya() {
        try {
            List<JenisBiaya> ljb = jenisBiayaDAO.list();
            cmbboxJenisBiaya.getItems().clear();
            for (JenisBiaya jb : ljb) {
                Comboitem item = new Comboitem(jb.getNamaJenisBiaya());
                cmbboxJenisBiaya.appendChild(item);

            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void loadTahunKelompokAnggaran() throws Exception {
        cmbboxTahunKelompokAnggaran.getItems().clear();
        for (Map map : kelompokBiayaDAO.listDistinct()) {
            Comboitem item = new Comboitem(map.get("tahunKelompok").toString());
            cmbboxTahunKelompokAnggaran.appendChild(item);

        }

    }

    public void btnCariOnClick() throws Exception {
        final Window win = (Window) Executions.createComponents(
                "sippzul/perekamankelompokbiaya/popup.zul", this, null);
        Textbox txtboxSearch = (Textbox) win.getFellow("txtboxSearch");
        txtboxSearch.setValue(txtboxKeySearch.getValue());
        win.doModal();

    }

    public void btnSimpanOnClick() throws Exception {
        if (cmbboxTahunKelompokAnggaran.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan pilih Tahun Kelompok Anggaran",
                    "Pesan Kesalahan", Messagebox.OK, Messagebox.INFORMATION);
            cmbboxTahunKelompokAnggaran.setFocus(true);
            return;

        }

        if (cmbboxJenisBiaya.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan pilih Jenis Biaya", "Pesan Kesalahan",
                    Messagebox.OK, Messagebox.INFORMATION);
            cmbboxJenisBiaya.setFocus(true);
            return;

        }

        if (txtboxKeySearch.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan pilih Nama Pos Biaya", "Pesan Kesalahan",
                    Messagebox.OK, Messagebox.INFORMATION);
            txtboxKeySearch.setFocus(true);
            return;

        }

        PerekamanKelompokBiaya pkb = new PerekamanKelompokBiaya();
        pkb.setTahunKelompok(cmbboxTahunKelompokAnggaran.getValue());
        JenisBiaya jb = jenisBiayaDAO.select(cmbboxJenisBiaya.getValue());
        if (jb != null) {
            pkb.setKodeJenisBiaya(jb.getKodeJenisBiaya());
        } else {
            Messagebox.show("Silahkan pilih Jenis Biaya", "Pesan Kesalahan",
                    Messagebox.OK, Messagebox.INFORMATION);
            cmbboxJenisBiaya.setFocus(true);
            return;

        }

        pkb.setKodePosBiaya(Integer.parseInt(txtboxIdPosBiaya.getValue()));

        pkb.setIsUmum(rdUmum.isSelected() ? "Y" : "N");

        if (lblKodeTahunKelompokAnggaran.getValue().trim().equalsIgnoreCase("")) {
            long juml = kelompokBiayaDAO.countByTahunAndKodePosBiaya(pkb.getTahunKelompok(), pkb.getKodePosBiaya());
            if (juml > 0) {
                Messagebox.show(
                        "Nama Pos Biaya yang anda masukkan telah ada untuk tahun " + pkb.getTahunKelompok(), "Informasi",
                        Messagebox.OK, Messagebox.INFORMATION);
                txtboxKeySearch.setFocus(true);
                return;

            }
            kelompokBiayaDAO.insert(pkb);
        } else {
            pkb.setKodeKelompokBiaya(Integer.parseInt(lblKodeTahunKelompokAnggaran.getValue()));

            if (pkb.getIsUmum().equalsIgnoreCase("Y")) {
                long jml = unitPosBiayaKhususDAO.countByKodeKelompokBiaya(Integer.parseInt(lblKodeTahunKelompokAnggaran.getValue()));
                if (jml > 0) {
                    if (Messagebox.show(
                            "Perubahan akan menghapus data di tabel posBiayaKhususUnit. Lanjutkan?",
                            "Pesan Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                        unitPosBiayaKhususDAO.deleteByKodeKelompokBiaya(Integer.parseInt(lblKodeTahunKelompokAnggaran.getValue()));
                    } else {
                        return;
                    }
                }
            }
            kelompokBiayaDAO.update(pkb);

        }

        readyState();
        clear();

        load();
        cmbboxTahunKelompokAnggaranOnChange();

    }

    public void btnBatalOnClick() throws Exception {
        readyState();
        clear();

        load();
        cmbboxTahunKelompokAnggaranOnChange();

    }

    public void lstboxDaftarKelompokBiayaOnSelect() {
        Map m = (Map) lstboxDaftarKelompokBiaya.getSelectedItem().getValue();
        Window window = (Window) getRoot().getFellow("contentDiv").getFirstChild();
        Label lblKodeTahunKelompokAnggaran = (Label) window.getFellow("lblKodeTahunKelompokAnggaran");
        lblKodeTahunKelompokAnggaran.setValue(m.get("kodeKelompokBiaya").toString());
        Combobox cmTahunKelompok = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
        cmTahunKelompok.setValue(m.get("tahunKelompok").toString());

        Combobox cmbJenisBiaya = (Combobox) window.getFellow("cmbboxJenisBiaya");
        String namaJenisBiaya = m.get("jenisBiaya").toString();
        if (namaJenisBiaya.trim().length() < 1) {
            cmbJenisBiaya.setValue(m.get("namaJenisBiayaHidden").toString());
        } else {
            cmbJenisBiaya.setValue(m.get("jenisBiaya").toString());
        }
        final boolean isUmum = m.get("isUmum").toString().equalsIgnoreCase("Y");
        Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
        txtboxIdPosBiaya.setValue(m.get("kodePosBiaya").toString());
        Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
        txtboxKeySearch.setValue(m.get("namaPosBiaya").toString());

        Radio rdUmum = (Radio) window.getFellow("rdUmum");
        Radio rdKhusus = (Radio) window.getFellow("rdKhusus");
        rdUmum.setChecked(isUmum);
        rdKhusus.setChecked(!isUmum);

        cmTahunKelompok.setDisabled(true);
        cmbJenisBiaya.setDisabled(true);
        txtboxIdPosBiaya.setDisabled(true);
        txtboxKeySearch.setDisabled(true);
        rdUmum.setDisabled(true);
        rdKhusus.setDisabled(true);
    }

    // /////////////////
    public void loadLstboxDaftarKelompokBiaya() {
        lstboxDaftarKelompokBiaya.getItems().clear();
        int no = 0;
        for (final Map m : kelompokBiayaDAO.listDetails()) {
            Listitem item = new Listitem();
            item.setValue(m);
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("jenisBiaya"))));
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("namaPosBiaya"))));

            final boolean isUmum = m.get("isUmum").toString().equalsIgnoreCase(
                    "Y");
            if (isUmum) {
                item.appendChild(new Listcell("Umum"));
            } else {
                item.appendChild(new Listcell("Khusus"));
            }

            item.appendChild(new Listcell());

            Toolbarbutton toolbarbtnUbah = new Toolbarbutton();
            toolbarbtnUbah.setLabel("[ubah]");
            toolbarbtnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    String isMutlak = (String) m.get("isMutlak");
                    if (isMutlak.equalsIgnoreCase("Y")) {
                        Messagebox.show("Data Tidak Dapat Diubah ",
                                "Informasi", Messagebox.OK,
                                Messagebox.INFORMATION);
                        return;
                    } else {
                        Window window = (Window) getRoot().getFellow(
                                "contentDiv").getFirstChild();

                        Label lblKodeTahunKelompokAnggaran = (Label) window.getFellow("lblKodeTahunKelompokAnggaran");
                        lblKodeTahunKelompokAnggaran.setValue(m.get(
                                "kodeKelompokBiaya").toString());
                        Combobox cmTahunKelompok = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
                        cmTahunKelompok.setValue(m.get("tahunKelompok").toString());
                        cmTahunKelompok.setDisabled(true);
                        Combobox cmbJenisBiaya = (Combobox) window.getFellow("cmbboxJenisBiaya");
                        cmbJenisBiaya.setDisabled(true);
                        String namaJenisBiaya = m.get("jenisBiaya").toString();
                        if (namaJenisBiaya.trim().length() < 1) {
                            cmbJenisBiaya.setValue(m.get("namaJenisBiayaHidden").toString());
                        } else {
                            cmbJenisBiaya.setValue(m.get("jenisBiaya").toString());
                        }
                        Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
                        txtboxIdPosBiaya.setDisabled(true);
                        txtboxIdPosBiaya.setValue(m.get("kodePosBiaya").toString());
                        Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
                        txtboxKeySearch.setDisabled(true);
                        txtboxKeySearch.setValue(m.get("namaPosBiaya").toString());

                        Radio rdUmum = (Radio) window.getFellow("rdUmum");
                        Radio rdKhusus = (Radio) window.getFellow("rdKhusus");
                        rdUmum.setChecked(isUmum);
                        rdKhusus.setChecked(!isUmum);

                        rdKhusus.setDisabled(false);
                        rdUmum.setDisabled(false);
                        txtboxIdPosBiaya.setDisabled(false);
                        txtboxKeySearch.setDisabled(false);
                        cmbJenisBiaya.setDisabled(false);
                        cmTahunKelompok.setDisabled(false);

                    }

                }
            });

            final Toolbarbutton toolbarbtnHapus = new Toolbarbutton();
            toolbarbtnHapus.setLabel("[hapus]");
            toolbarbtnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    String isMutlak = (String) m.get("isMutlak");
                    if (isMutlak.equalsIgnoreCase("Y")) {
                        Messagebox.show("Data Tidak Dapat Dihapus ",
                                "Informasi", Messagebox.OK,
                                Messagebox.INFORMATION);
                        return;
                    } else {
                        if (Messagebox.show("Apakah data Item Biaya: " + m.get("namaPosBiaya").toString() + " akan dihapus?", "Pesan Konfirmasi",
                                Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                            try {

                                Integer kode = (Integer) m.get("kodeKelompokBiaya");
                                long cek = kelompokBiayaDAO.cekTableAnak(kode);
                                if (cek > 0) {
                                    if (Messagebox.show("Data sudah dipakai di table lain. Apakah data Item Biaya: " + m.get("namaPosBiaya").toString() + " akan dihapus?", "Pesan Konfirmasi",
                                            Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                                        kelompokBiayaDAO.delete(kode.intValue());
                                    }
                                } else {
                                    kelompokBiayaDAO.delete(kode.intValue());
                                }
                            } catch (Exception ex) {
                                Messagebox.show("Gagal menghapus data: " + ex.getMessage());
                            }
                            Window window = (Window) getRoot().getFellow(
                                    "contentDiv").getFirstChild();


                            Button btnBatal = (Button) window.getFellow("btnBatal");
                            toolbarbtnHapus.addForward(null, btnBatal,
                                    "onClick");
                            cmbboxTahunKelompokAnggaranOnChange();
                        }
                    }
                }
            });

            Hbox box = new Hbox();
            box.appendChild(toolbarbtnUbah);
            box.appendChild(toolbarbtnHapus);

            if (!isUmum) {
                final Toolbarbutton toolbarisiunit = new Toolbarbutton();
                toolbarisiunit.setLabel("[isi unit]");

                box.appendChild(toolbarisiunit);
                toolbarisiunit.addEventListener("onClick", new EventListener() {

                    public void onEvent(Event arg0) throws Exception {
                        Div contentDiv = (Div) getRoot().getFellow("contentDiv");
                        contentDiv.getChildren().clear();
                        Executions.createComponents(
                                "/sippzul/perekamanunitposbiayakhusus/PerekamanUnitPosBiayaKhusus.zul",
                                contentDiv, null);
                    }
                });
            }
            Listcell lbox = new Listcell();
            lbox.appendChild(box);
            item.appendChild(lbox);
            item.addEventListener("onClick", new EventListener() {

                @Override
                public void onEvent(Event event) throws Exception {
                    // TODO Auto-generated method stub
                    Window window = (Window) getRoot().getFellow("contentDiv").getFirstChild();
                    Label lblKodeTahunKelompokAnggaran = (Label) window.getFellow("lblKodeTahunKelompokAnggaran");
                    lblKodeTahunKelompokAnggaran.setValue(m.get(
                            "kodeKelompokBiaya").toString());
                    Combobox cmTahunKelompok = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
                    cmTahunKelompok.setValue(m.get("tahunKelompok").toString());

                    Combobox cmbJenisBiaya = (Combobox) window.getFellow("cmbboxJenisBiaya");
                    String namaJenisBiaya = m.get("jenisBiaya").toString();
                    if (namaJenisBiaya.trim().length() < 1) {
                        cmbJenisBiaya.setValue(m.get("namaJenisBiayaHidden").toString());
                    } else {
                        cmbJenisBiaya.setValue(m.get("jenisBiaya").toString());
                    }
                    Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
                    txtboxIdPosBiaya.setValue(m.get("kodePosBiaya").toString());
                    Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
                    txtboxKeySearch.setValue(m.get("namaPosBiaya").toString());

                    Radio rdUmum = (Radio) window.getFellow("rdUmum");
                    Radio rdKhusus = (Radio) window.getFellow("rdKhusus");
                    rdUmum.setChecked(isUmum);
                    rdKhusus.setChecked(!isUmum);
                    rdUmum.setDisabled(true);
                    rdKhusus.setDisabled(true);

                }
            });
            lstboxDaftarKelompokBiaya.appendChild(item);

        }

    }
    // //////////////////////
}
